package com.example.CarManagement.sys.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 审批流程定义表，定义不同类型的用车申请的审批流程
 * </p>
 *
 * @author 徐佳彪
 * @since 2025-07-17
 */
@TableName("c_approval_flows")
public class ApprovalFlows implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 流程ID
     */
    private String id;

    /**
     * 流程名称
     */
    private String name;

    /**
     * 流程描述
     */
    private String description;

    /**
     * 步骤序号，从1开始
     */
    private Integer stepNumber;

    /**
     * 审批角色ID，根据approver_type指向roles或users表的ID，如为department_manager或superior则为NULL
     */
    private String approverRoleId;

    /**
     * 记录创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 记录最后更新时间
     */
    private LocalDateTime updatedAt;

    private Byte deleted;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Integer getStepNumber() {
        return stepNumber;
    }

    public void setStepNumber(Integer stepNumber) {
        this.stepNumber = stepNumber;
    }

    public String getApproverRoleId() {
        return approverRoleId;
    }

    public void setApproverRoleId(String approverRoleId) {
        this.approverRoleId = approverRoleId;
    }

    public LocalDateTime getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(LocalDateTime createdAt) {
        this.createdAt = createdAt;
    }

    public LocalDateTime getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(LocalDateTime updatedAt) {
        this.updatedAt = updatedAt;
    }

    public Byte getDeleted() {
        return deleted;
    }

    public void setDeleted(Byte deleted) {
        this.deleted = deleted;
    }

    @Override
    public String toString() {
        return "ApprovalFlows{" +
            "id = " + id +
            ", name = " + name +
            ", description = " + description +
            ", stepNumber = " + stepNumber +
            ", approverRoleId = " + approverRoleId +
            ", createdAt = " + createdAt +
            ", updatedAt = " + updatedAt +
            ", deleted = " + deleted +
        "}";
    }
}
